package co.edu.udea.iw.dao.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


import co.edu.udea.iw.dao.RespuestaDAO;
import co.edu.udea.iw.dto.respuesta;
import co.edu.udea.iw.exception.waDaoException;

public class RespuestaDaoHibernate extends HibernateDaoSupport implements RespuestaDAO {

	@Override
	public respuesta insertar(respuesta res) throws waDaoException {
		Transaction tx = null;
		Session session = null;
		try {
			session = getSession();
			tx = session.beginTransaction();
			session.save(res);
			tx.commit();

		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			// session.close();
		}
		return res;
	}

	@Override
	public respuesta modificar(respuesta res) throws waDaoException {
		Transaction tx = null;
		Session session = null;
		try {
			session = getSession();
			tx = session.beginTransaction();
			session.update(res);
			tx.commit();

		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			session.close();
		}
		return res;
	}

	@Override
	public void eliminar(respuesta res) throws waDaoException {
		Transaction tx = null;
		Session session = null;
		try {
			session = getSession();
			tx = session.beginTransaction();

			session.delete(res);
			tx.commit();

		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			session.close();
		}

	}

	@Override
	public List<respuesta> Consultar() throws waDaoException {
		List<respuesta> resltds = null;
		Session session = null;
		try {
			session = getSession();

			Criteria criteria = session.createCriteria(respuesta.class);
			resltds = criteria.list();
		} catch (HibernateException e) {

			throw new waDaoException(e);
		} 
		return resltds;
	}

	@Override
	public respuesta obtener(String id_respuesta) throws waDaoException {
		respuesta res = null;
		Session session = null;
		try {
			session = getSession();
			res = (respuesta) session.load(respuesta.class, id_respuesta);
		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			session.close();
		}
		return res;
	}

}
